#include <iostream>
using namespace std;

class Person
{
public:
  int m_a;
  mutable int m_b;

  // this指针的本质是 指针常量  指针的指向是不可以修改的
  // const Person * const this
  // 在成员函数后面加const， 修饰到的是this指向，让指针指向的值也不可以修改
  void showPerson() const
  {
    this->m_b = 200;
    // m_a = 100;
    // this = NULL;  // this 指针不可以修改指针的指向的
  }

  void func() {}
};

void test01()
{
  Person p;
  p.showPerson();
}

// 常对象
void test02()
{
  const Person p; // 在对象前加const，变为常对象
  // p.m_a = 100;
  p.m_b = 100; // m_b是特殊值，在常对象下也可以修改

  // 常对象只能调用常函数
  // p.func(); // 对象含有与成员 函数 "Person::func" 不兼容的类型限定符 -- 对象类型是:  const Person
}

int main(int argc, char const *argv[])
{

  return 0;
}